package com.qidianit.mes.pojo.pro;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.qidianit.mes.pojo.Customer;
import com.qidianit.mes.pojo.Material;
import com.qidianit.mes.pojo.SysDictData;
import com.qidianit.mes.pojo.Unit;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @Author: YKYB
 * @Date: 2025/9/20 22:30
 * @Description: 生产订单实体类
 */
@Data
@TableName("production_order")
public class ProductionOrder {
    /**
     * 工单主键
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 工单编码（唯一）
     */
    private String productionOrderCode;

    /**
     * 工单名称
     */
    private String productionOrderName;

    /**
     * 来源单据：1订单 2手工
     */
    private Integer productionOrderSource;

    /**
     * 工单类型：字典PRODUCTION_ORDER_TYPE
     */
    private Long productionOrderType;

    /**
     * 销售订单编号
     */
    private String orderCode;

    /**
     * 产品/物料编码（关联material.code）
     */
    private String materialCode;

    /**
     * 生产数量
     */
    private BigDecimal productionOrderQuantity;

    /**
     * 客户编码（关联customer.code）
     */
    private String customerCode;

    /**
     * 需求日期
     */
    @TableField("update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime requestDate;

    /**
     * 状态：字典PRODUCT_ORDER_STATUS
     */
    private Long status;

    /**
     * 二维码URL
     */
    private String qrCodeUrl;

    /**
     * 创建人ID
     */
    private Long creatorId;

    /**
     * 更新人ID
     */
    private Long updatorId;

    /**
     * 创建时间
     */
    @TableField("update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime updateTime;

    /**
     * 删除标记 0正常 1删除
     */
    private Integer deleteFlag;

    /* ======== 联查对象 ======== */
    private Customer customer;
    private Material material;
    @JsonIgnoreProperties(value = {"unit"})
    private Unit unit;
    private SysDictData statusDictData;

    //工单类型的字典
    private SysDictData typeDictData;
    /* ======== 以下为连表冗余字段，方便前端展示 ======== */
    private String materialName;           // 产品名称
    private String materialSpecification;  // 规格型号
    private String unitName;               // 单位名称
    private String customerName;           // 客户名称
    private String typeLabel;              // 工单类型文本
    private String statusLabel;            // 状态文本
}
